import { createI18n } from 'vue-i18n'
import en from './en.js'
import zh from './zh.js'

// 支持的语言列表
export const supportedLocales = {
  en: {
    name: 'English',
    flag: '🇺🇸'
  },
  zh: {
    name: '中文',
    flag: '🇨🇳'
  }
}

// 获取浏览器默认语言 - 添加服务端渲染兼容性
function getDefaultLocale() {
  // 检查是否在浏览器环境中
  if (typeof window === 'undefined' || typeof navigator === 'undefined') {
    // 服务端渲染环境，返回默认语言
    return 'en'
  }
  
  try {
    const browserLang = navigator.language.split('-')[0]
    return Object.keys(supportedLocales).includes(browserLang) ? browserLang : 'en'
  } catch (error) {
    console.warn('Failed to get browser language:', error)
    return 'en'
  }
}

// 创建 i18n 实例
const i18n = createI18n({
  legacy: false,
  locale: getDefaultLocale(),
  fallbackLocale: 'en',
  messages: {
    en,
    zh
  },
  // 启用全局属性
  globalInjection: true,
  // 添加 SSR 支持
  silentTranslationWarn: true,
  silentFallbackWarn: true
})

export default i18n

// 语言切换函数 - 添加浏览器环境检查
export function setLocale(locale) {
  if (Object.keys(supportedLocales).includes(locale)) {
    i18n.global.locale.value = locale
    
    // 只在浏览器环境中操作 localStorage 和 DOM
    if (typeof window !== 'undefined') {
      try {
        localStorage.setItem('locale', locale)
        document.documentElement.lang = locale
      } catch (error) {
        console.warn('Failed to save locale to storage:', error)
      }
    }
  }
}

// 获取当前语言
export function getCurrentLocale() {
  return i18n.global.locale.value
}

// 从本地存储恢复语言设置 - 添加浏览器环境检查
export function loadLocaleFromStorage() {
  // 只在浏览器环境中执行
  if (typeof window === 'undefined') {
    return
  }
  
  try {
    const savedLocale = localStorage.getItem('locale')
    if (savedLocale && Object.keys(supportedLocales).includes(savedLocale)) {
      setLocale(savedLocale)
    }
  } catch (error) {
    console.warn('Failed to load locale from storage:', error)
  }
}